<html>
<head>
<title>listgeo - Dump GeoTIFF Metadata</title>
</head>

<body  BGCOLOR="#FFFFFF">

<h1>listgeo - Dump GeoTIFF Metadata</h1>

<pre><b>
Usage: listgeo [-tfw] [-no_norm] [-proj4] [-t tabledir] inputfile
</b></pre>

The program listgeo takes a GeoTIFF file as input and dumps to
the standard output a GeoTIFF "metadata" file, which is human
readable, and may also be used as input to other programs which
use the "GTIFImport" routine, such as <a href="geotiff.html">geotifcp</a>.<p>

The <b>-tfw</b> flag may be passed to force generation of an ESRI style .tfw
file as well as the metadata file.  The ESRI world file is always given
the same basename as the input file, with the extension .tfw.  If one
exists already it will be overwritten.<p>

The <b>-no_norm</b> flag will supress reporting of normalized parameters, and
reporting of corner points. <p>

The <b>-proj4</b> flag forces listgeo to report the PROJ.4 projection
string it uses for reprojecting corners to lat/long.<p>

The <b>-t tabledir</b> flag overrides the programs concept of how to file the
EPSG CSV files, causing it to look in directory "tabledir".  <p>

<h2>GeoTIFF Metadata Format</h2>

For the formalist junkies, we will define a GeoTIFF metadata format
in an unambiguous fashion, and follow that by a concrete example.<p>

The metadata format is defined as follows (all strings not placed
between <braces> are string literals, case-sensitive, and any entry
followed by "*" or "*<number>" indicates multiple entries):<p>

<pre>
&lt;Geotiff_Metadata&gt; = &lt;Geotiff_Header&gt; + &lt;GeoTIFF_Body&gt; + &lt;GeoTIFF_Trailer&gt;

   &lt;Geotiff_Header&gt; = &lt;White_Space&gt; + Geotiff_Information: + &lt;Return&gt;
   &lt;GeoTIFF_Trailer&gt; = &lt;White_Space&gt; + End_Of_Geotiff. + &lt;Return&gt;
   &lt;GeoTIFF_Body&gt; = &lt;GeoTIFF_Info&gt; + &lt;GeoTIFF_Tags&gt; + &lt;GeoTIFF_Keys&gt;
      &lt;GeoTIFF_Info&gt; = &lt;GeoTIFF_Version&gt; + &lt;GeoTIFF_Revision&gt;
         &lt;GeoTIFF_Version&gt; = Version: + &lt;Single_Space&gt; + &lt;Version&gt; + &lt;Return&gt;
            &lt;Version&gt; = &lt;Integer&gt;
         &lt;GeoTIFF_Revision&gt; = Revision: +
               &lt;Single_Space&gt; + &lt;Major_Rev&gt; + &lt;Period&gt; + &lt;Minor_Rev&gt; + &lt;Return&gt;
               &lt;Major_Rev&gt; = &lt;Integer&gt;
               &lt;Minor_Rev&gt; = &lt;Integer&gt;
      &lt;GeoTIFF_Tags&gt; =  &lt;Tag_Header&gt; + &lt;Tag_Entry&gt;* + &lt;Tag_Trailer&gt;
         &lt;Tag_Header&gt; = &lt;White_Space&gt; + Tagged_Information: + &lt;Return&gt;
         &lt;Tag_Trailer&gt; = &lt;White_Space&gt; + End_Of_Tags. + &lt;Return&gt;
         &lt;Tag_Entry&gt; = &lt;Tag_Entry_Header&gt; + &lt;Tag_Entry_Row&gt;*
            &lt;Tag_Entry_Header&gt; = &lt;White_Space&gt; +
                     &lt;Tag_Name&gt; + &lt;Tag_Dimension&gt; + &lt;Colon&gt; + &lt;Return&gt;
               &lt;Tag_Dimension&gt;  = "(" + &lt;NRows&gt; + &lt;Comma&gt; + &lt;NCols&gt; + ")"
		 	      &lt;NRows&gt; = &lt;Integer&gt;
		 	      &lt;NCols&gt; = &lt;Integer&gt;
            &lt;Tag_Entry_Row&gt; = &lt;White_Space&gt; + &lt;Double_Float&gt;*&lt;NCols&gt; + &lt;Return&gt;
      &lt;GeoTIFF_Keys&gt; =  &lt;Key_Header&gt; + &lt;Key_Entry&gt;* + &lt;Key_Trailer&gt;
         &lt;Key_Header&gt; = &lt;White_Space&gt; + Keyed_Information: + &lt;Return&gt;
         &lt;Key_Trailer&gt; = &lt;White_Space&gt; + End_Of_Keys. + &lt;Return&gt;
         &lt;Key_Entry&gt; = &lt;Key_Entry_Header&gt; + &lt;Key_Entry_Value&gt;
            &lt;Key_Entry_Header&gt; = &lt;White_Space&gt; +
                     &lt;Key_Name&gt; + &lt;Key_Dimension&gt; + &lt;Colon&gt; + &lt;Return&gt;
              &lt;Key_Dimension&gt; = "(" + &lt;Key_Format&gt; + &lt;Comma&gt; + &lt;Key_Count&gt; + ")"
            &lt;Key_Entry_Value&gt; = (&lt;Key_Value&gt; | &lt;Numeric_Value&gt; | &lt;Ascii_Value&gt;)
               &lt;Numeric_Value&gt; = (&lt;Integer&gt; | &lt;Double_Float&gt;)
               &lt;Ascii_Value&gt; = &lt;Double_Quote&gt; + &lt;String&gt; + &lt;Double_Quote&gt;

   &lt;Tag_Name&gt; = All symbolic tag names defined in GeoTIFF spec.
   &lt;Key_Name&gt; = All symbolic key names defined in GeoTIFF spec.
   &lt;Key_Value&gt; = All symbolic value names defined in GeoTIFF spec.
   &lt;Key_Format&gt; = (Short | Ascii | Double)
</pre>

And for the pedantic:
<pre>
   &lt;White_Space&gt; = (&lt;Single_Space&gt; | &lt;Tab&gt;)*
   &lt;Double_Float&gt; = &lt;Mantissa&gt;&lt;Exponent&gt;
   &lt;Mantissa&gt; = &lt;Sign&gt;&lt;Integer&gt;&lt;Period&gt;&lt;Integer&gt;
   &lt;Exponent&gt; = ( |e&lt;Sign&gt;&lt;Integer&gt;)
   &lt;Sign&gt; = ( |+|-)
   &lt;Integer&gt; = (0|1|2|3|4|5|6|7|8|9)*
   ...
</pre>

Following the formal metadata report, there is an optional (use -no_norm
to supress) report on the <i>normalized</i> projection parameters for the
file.  This is an attempt to lookup PCS and GCS definitions to get detailed
datum, ellipsoid, and projection definitions for the file.  In general it
requires access to the EPSG CSV files to work properly.  The GEOTIFF_CSV
environment variable can be used to point to directory containing the EPSG
CSV files (normally distributed with libgeotiff, or this executable).  If
GEOTIFF_CSV is not defined listgeo will look for a csv subdirectory, or
the /usr/local/shared/epsg_csv directory.  The -t commandline switch can
also be used to indicate where the CSV files are located.<p>

Following the normalized projection information listgeo will report the
positions of the four corner coordinates, and if possible their lat/long
equivelents.  The corner coordinates are reported for tiepoint+scale and
transformation matrix formulations of GeoTIFF files, but not for multiple
tiepoint formulations.  The lat/long coordinates are only available if
listgeo is compiled with PROJ.4, if the projection definition can be
normalized, and if it is a projection supported by the listgeo PROJ.4
binding.<p>

Example (default output of listgeo):<p>

<pre>
Geotiff_Information:
   Version: 1
   Key_Revision: 1.0
   Tagged_Information:
      ModelTiepointTag (2,3):
         0                0                0
         440720           3751320          0
      ModelPixelScaleTag (1,3):
         60               60               0
      End_Of_Tags.
   Keyed_Information:
      GTModelTypeGeoKey (Short,1): ModelTypeProjected
      GTRasterTypeGeoKey (Short,1): RasterPixelIsArea
      GTCitationGeoKey (Ascii,17): "UTM    11 S E000"
      GeogLinearUnitsGeoKey (Short,1): Linear_Meter
      GeogAngularUnitsGeoKey (Short,1): Angular_Degree
      ProjectedCSTypeGeoKey (Short,1): PCS_NAD27_UTM_zone_11N
      End_Of_Keys.
   End_Of_Geotiff.

PCS = 26711 (NAD27 / UTM zone 11N)
Projection = 16011 (UTM zone 11N)
Projection Method: CT_TransverseMercator
   ProjNatOriginLatGeoKey: 0.000000 (  0d 0' 0.00"N)
   ProjNatOriginLongGeoKey: -117.000000 (117d 0' 0.00"W)
   ProjScaleAtNatOriginGeoKey: 0.999600
   ProjFalseEastingGeoKey: 500000.000000
   ProjFalseNorthingGeoKey: 0.000000
GCS: 4267/NAD27
Datum: 6267/North American Datum 1927
Ellipsoid: 7008/Clarke 1866 (6378206.40,6356583.80)
Prime Meridian: 8901/Greenwich (0.000000/  0d 0' 0.00"E)
Projection Linear Units: 9001/metre (1.000000m)

Corner Coordinates:
Upper Left    ( 440720.000,3751320.000)  (117d38'28.21"W, 33d54' 8.47"N)
Lower Left    ( 440720.000,3720600.000)  (117d38'20.79"W, 33d37'31.04"N)
Upper Right   ( 471440.000,3751320.000)  (117d18'32.07"W, 33d54'13.08"N)
Lower Right   ( 471440.000,3720600.000)  (117d18'28.50"W, 33d37'35.61"N)
Center        ( 456080.000,3735960.000)  (117d28'27.39"W, 33d45'52.46"N)
</pre>

<h2>See Also:</h2>

<ol>
<li>
<a href="geotifcp.html">geotiffcp</a> - Copy TIFF installing GeoTIFF
metadata.<p>
<li>
<a href="http://www.remotesensing.org/geotiff/geotiff.html">
http://www.remotesensing.org/geotiff/geotiff.html</a> - GeoTIFF/libgeotiff Home Page<p>

</ol>
</body>
</html>
